package com.molichuxing.services.infrastructure.dao;

import java.time.LocalDateTime;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.framework.dto.TabDto;
import com.molichuxing.services.infrastructure.bean.CheckBean;

/**
 * <p>
 * 车辆检验表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2019-08-15
 */
public interface CheckMapper extends RootMapper<CheckBean> {

	int getCheckPageCount(@Param("carIds") List<Integer> carIds, @Param("carType") Integer carType,
			@Param("status") Integer status, @Param("startCheckTime") LocalDateTime startCheckTime,
			@Param("endCheckTime") LocalDateTime endCheckTime);

	// int getCheckPageCount(@Param("params") Map<String, Object> params);

	List<CheckBean> getCheckPagePage(@Param("carIds") List<Integer> carIds, @Param("carType") Integer carType,
			@Param("status") Integer status, @Param("startCheckTime") LocalDateTime startCheckTime,
			@Param("endCheckTime") LocalDateTime endCheckTime, @Param("pageNum") Integer pageNum,
			@Param("pageSize") Integer pageSize);

	@Override
	CheckBean getById(Integer id);

	/**
	 * 根据车辆id获取违章信息
	 * 
	 * @param carId
	 * @return
	 */
	List<CheckBean> getCheckByCarId(@Param("carId") Integer carId);

	/**
	 * 根据orderCode获取违章信息
	 * 
	 * @param orderCode
	 * @return
	 */
	List<CheckBean> getCheckByOrderCode(@Param("orderCode") Long orderCode);

	int modify(CheckBean checkBean);

	int getPdiCheckPageCount(@Param("carIds") List<Integer> carIds, @Param("orderCode") Long orderCode,
			@Param("returnStoreId") Integer returnStoreId, @Param("status") Integer status,
			@Param("dealerId") Integer dealerId);

	List<CheckBean> getPdiCheckPagePage(@Param("carIds") List<Integer> carIds, @Param("orderCode") Long orderCode,
			@Param("returnStoreId") Integer returnStoreId, @Param("status") Integer status,
			@Param("dealerId") Integer dealerId, @Param("pageNum") Integer pageNum,
			@Param("pageSize") Integer pageSize);

	/**
	 * 根据状态获取数量
	 *
	 * @return
	 */
	List<TabDto> getCountByStatus(@Param("type") Integer type, @Param("dealerId") Integer dealerId);

	/**
	 * 车检全部数量
	 * 
	 * @return
	 */
	int getCount(@Param("type") Integer type, @Param("dealerId") Integer dealerId);

	/**
	 * 检验待处理数量
	 * 
	 * @param type
	 * @return
	 */
	Integer getPendCount(Integer type);

	/**
	 * 修改状态
	 * 
	 * @param id
	 * @param status
	 * @return
	 */
	int modifyCheckStatus(@Param("id") Integer id, @Param("status") Integer status);

	/**
	 * 修改状态
	 * 
	 * @param id
	 * @param status
	 * @param opName
	 * @return
	 */
	int modifyCheckStatusAndOpName(@Param("id") Integer id, @Param("status") Integer status,
			@Param("opName") String opName);

	/**
	 * 
	 * @param orderCodes
	 * @return
	 */
	List<CheckBean> getCheckList(@Param("orderCodes") List<Long> orderCodes);
}
